import axios from 'axios'

export default {
  /**
   * 上传文件
   * @param {File} file 文件对象
   * @param {Number} expirationDays 过期天数
   * @param {String} description 文件描述
   * @returns {Promise}
   */
  uploadFile(file, expirationDays, description) {
    const formData = new FormData()
    formData.append('file', file)
    if (expirationDays) {
      formData.append('expirationDays', expirationDays)
    }
    if (description) {
      formData.append('description', description)
    }
    
    return axios.post('/files/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  /**
   * 根据下载码获取文件信息
   * @param {String} downloadCode 下载码
   * @returns {Promise}
   */
  getFileByCode(downloadCode) {
    return axios.get(`/files/info/${downloadCode}`)
  },

  /**
   * 获取文件列表
   * @returns {Promise}
   */
  getFileList() {
    return axios.get('/files/list')
  },

  /**
   * 删除文件
   * @param {String} fileKey 文件key
   * @returns {Promise}
   */
  deleteFile(fileKey) {
    return axios.delete(`/files/${fileKey}`)
  },

  /**
   * 上传多个文件并压缩
   * @param {Array} files 文件数组
   * @param {String} zipName 压缩文件名
   * @param {Number} expirationDays 过期天数
   * @param {String} description 文件描述
   * @returns {Promise}
   */
  uploadMultipleFiles(files, zipName, expirationDays, description) {
    const formData = new FormData()
    
    // 添加多个文件
    files.forEach(file => {
      formData.append('files', file)
    })
    
    if (zipName) {
      formData.append('zipName', zipName)
    }
    
    if (expirationDays) {
      formData.append('expirationDays', expirationDays)
    }
    
    if (description) {
      formData.append('description', description)
    }
    
    return axios.post('/files/upload/multiple', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  }
} 